Flash memory is an improved form of Electrically-Erasable Programmable Read-Only Memory (EEPROM). Traditional EEPROM devices are only capable of erasing or writing one memory location at a time. In contrast, flash memory allows multiple memory locations to be erased or written in one programming operation. Flash memory can thus operate at higher effective speeds than traditional EEPROM.
Flash memory enjoys a number of advantages over other storage devices. It generally offers faster read access times and better shock resistance than a hard disk drive (HDD). Unlike dynamic random access memory (DRAM), flash memory is non-volatile, meaning that data stored in a flash storage device is not lost when power to the device is removed. For this reason, a flash memory device is frequently referred to as a flash storage device, to differentiate it from volatile forms of memory. These advantages, and others, may explain the increasing popularity of flash memory for storage applications in devices such as memory cards, USB flash drives, mobile phones, digital cameras, mass storage devices, MP3 players and the like.
Flash memory may use single-level cell (SLC) flash memory, which is configured to store one bit per memory cell, or multi-level cell (MLC) flash memory, which is configured to store multiple bits (e.g., two) of data per memory cell. While MLC flash memory may provide a higher storage density due to its ability to store more than one bit per cell, the maximum number of program/erase cycles that can be performed on MLC flash memory is significantly lower than the maximum number of program/erase cycles that can be performed on SLC flash memory. However, MLC flash memory is significantly less expensive than SLC flash memory and therefore may be the only commercially viable option for many storage applications. Accordingly, there is a need for improved techniques for more efficiently utilizing and managing MLC flash memory for data storage.